package org.example.mall.service;

import org.example.mall.entity.User;
import org.springframework.web.multipart.MultipartFile;

public interface UserService {
    // 手机号注册（带头像和邮箱）
    User registerByPhone(String phone, String verificationCode, String password, String email, MultipartFile avatar);

    // 手机号注册（不带头像和邮箱）
    User registerByPhone(String phone, String verificationCode, String password);

    // 用户名注册（带头像和邮箱）
    User register(String username, String password, String email, MultipartFile avatar);

    // 用户名注册（不带头像和邮箱）
    User register(String username, String password);

    // 手机号验证码登录
    User loginByPhone(String phone, String verificationCode);

    // 手机号密码登录
    User loginByPhonePassword(String phone, String password);

    // 用户名密码登录
    User login(String username, String password);

    // 发送验证码
    void sendVerificationCode(String phone);

    // 修改用户信息
    User updateUserInfo(Long userId, User userInfo);
    
    // 修改用户信息（带头像上传）
    User updateUserInfo(Long userId, User userInfo, MultipartFile avatar);

    // 修改密码
    boolean updatePassword(Long userId, String oldPassword, String newPassword);

    // 根据ID获取用户信息
    User getUserById(Long userId);

    // 根据手机号获取用户信息
    User getUserByPhone(String phone);

    // 检查手机号是否已注册
    boolean isPhoneRegistered(String phone);
}